/**
*\file mise_en_carton.h
*\author H4201
*/

#ifndef _MISE_EN_CARTON_H_
#define _MISE_EN_CARTON_H_

/*MODULES USED*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <semaphore.h>


/*EXPORTED FUNCTIONS*/

/**
	* thread permettant de capturer les SIGUSR1 représentant les arrivées de carton et de les traiter
	*\param parameter parametre inutilsé
	*\return 0 quand le thread se termine correctement
*/
void* mise_en_carton(void *parameter); 

/**
	* supprime le carton courant et le remplace par un nouveau.
	* La fonction est mise en attente si une arrivée de pièce est actuellement traitée.
*/
void supprimer_carton_courant();


/**
	* initialise les variables locales du thread ainsi que les message queue et inscrit le pid de l'application dans le shared memory.
	* public uniquement pour les tests
*/
void init_mise_en_carton();

/**
	* permet de charger les valeurs nécéssaire pour le thread de mise en carton
	*\param num_lot numéro du lot en cours de fabrication
*/
void charger_lot(int num_lot);

/**
	* lance le timer de timeout
*/
void launch_timeout();

/**
	* arrete le timer de timeout
*/
void stop_timeout();

/**
	* lance l'arret de la chaine de conditionnement. L'arret ne se fait pas forcément instantanément
*/
void demander_arret();

#endif // _MISE_EN_CARTON_H_

